iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
自我挑戰組

我的日常學習雜記與筆記整理系列 第 25

Day - 25 建構式調用筆記

  • 分享至 

  • xImage
  •  

使用new建立物件 & Object Literal

// 參考書中範例
var obj = new Object(); // 建立空物件,等於直接使用 {}
var arr = new Array();  // 建立空的陣列,等於直接使用 []
var date = new Date();  // 建立表示時間的 Date 物件
var regexp = new RegExp("javascript"); // 建立正規化表示式比對的 RegExp物件

// object literal

var obj = {} // 無屬性物件
var coordinate = {x:0, y:0}; // 兩個屬性
var point = {x: coordinate.x, y: coordinate.y}; 
var book ={
	"title": "CSS大全", 
	'sub-title': "WEB的視覺呈現",  //有 hyphens - 字號,字串字面值
	"for": "all audiences", // 使用 "" 是因為 for 為保留字
	"author1": {             // 物件 author1 為 book的屬性
		firstname: "Eric A",
		surname: "Meyer"
	},
	"author2": {
		firstname: "Estelle",
		surname: "Weyl"
	}
};

物件建立運算式 (Object creation expression)

利用物件建立運算式 (Object creation expression)建立一個新的物件,並調用建構式(constructor)這個函式來為物件做初始化:


/*函式調用運算式:
---------------------*/ 

f(0)  // f 為函式運算式, 0 為引數運算式




/* 物件建立運算式 (Object creation expression) 
-----------------------------------------------*/
var myFruit = new Fruit();  //若在一個函式或方法調用前加上關鍵字 new 就是 constructor

new Object();
new calculator(2,3); 

new Date();
new Fruit();

// 當物件建立時,沒有引數的話,可以省略()
new Object;
new Date;
new Fruit;
// 我們先定義一個建構式
function Fruit(color, taste) {
  this.color = color;
  this.taste = taste;
}

//JavaScript中使用 new 建立一個新的空物件,它會用我們給的引數去調用(呼叫) Fruit 函式,並把此新的空物件傳給 Fruit 函式。 Fruit 函式會用 this 來參考此新的物件,並設定此物件的屬性(color、taste)。
var apple = new Fruit("red", "sweet");


// apple 就有了顏色和味道的屬性
console.log(apple.color); // "red"
console.log(apple.taste); // "sweet"

當JavaScript中使用建構式來建立新的物件時,通常不會在建構式中使用 return :

function Fruit(color, taste) {
  this.color = color;
  this.taste = taste;
}

var apple = new Fruit("red", "sweet"); // 一個新建立並初始化的物件
console.log(apple); // { color: 'red', taste: 'sweet' }

若建構式明確地使用 return 來回傳一個物件,那麼此物件就會成為調用運算式的值

function Fruit(color, taste) {
  this.color = color;
  this.taste = taste;
  return { color: 'green', taste: 'sour' };
}

var apple = new Fruit("red", "sweet");
console.log(apple); // { color: 'green', taste: 'sour' }

若建構式使用沒有任何值的 return ,或它回傳一個基本型別值(primitive value),此回傳值會被忽略,調用的值仍然是新物件:

function Fruit(color, taste) {
  this.color = color;
  this.taste = taste;
  return 123;  // 基本型別值,所以回傳值被忽略了
}

var apple = new Fruit("red", "sweet"); // 一個新建立並初始化的物件
console.log(apple); // { color: 'red', taste: 'sweet' }

參考資源

  • JavaScript 大全 第六版, 歐萊禮

上一篇
Day - 24 JavaScript - var, let, const 的差異與練習題目
下一篇
Day - 26 使用call(), apply() 間接調用函式筆記
系列文
我的日常學習雜記與筆記整理30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言